www.gusucode.com > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序 > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序/NSCT/fusionIH.m
function C=fusion(x1,x2) %%%%%%%%%%%%%%%%%%%%%%%%% F1=imread('1_MS.png'); imshow(F1); F1=im2double(F1); % F1=im2double(x1); r=F1(:,:,1); g=F1(:,:,2); b=F1(:,:,3); th=acos((0.5*((r-g)+(r-b)))./((sqrt((r-g).^2+(r-b).*(g-b)))+eps)); H=th; H(b>g)=2*pi-H(b>g); H=H/(2*pi); I=(r+g+b)/3; x=(H); y=(120); % disp(class(x) ); I1=2./3-((mod(x,y)-60)./180); % HLOWER PART Calculate Saturation S=1-3.*(min(min(r,g),b))./(r+g+b+eps); % HUPPER PART Calculate Saturation id=find(I>I1); S(id)=1-3.*(1-max(max(r(id),g(id)),b(id)))./(3-(r(id)+g(id)+b(id)+eps)); F1=imread('1_PAN.png'); F1=im2double(F1); I=F1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hsi=cat(3,H,S,I); C=iNIHS2RGB(hsi); figure,imshow(C); %C=rgb2gray(C); %spectrum=log(1+abs(fftshift(fft2(C)))); end function C=iNIHS2RGB(hsi) HV=hsi(:,:,1)*2*pi; SV=hsi(:,:,2); IV=hsi(:,:,3); R=zeros(size(HV)); G=zeros(size(HV)); B=zeros(size(HV)); x=(HV); y=2.*pi./3; I1=2./3-((mod(x,y)-pi./3)./pi); %RG Sector % id=find((0<=HV)& (HV<2*pi/3)); id=find((IV<=I1)& (HV>=0)& (HV<(2.*pi./3)) & (IV<=(2./3-(HV-pi./3)./pi)) ); B(id)=IV(id).*(1-SV(id)); R(id)=IV(id).*(1+SV(id).*cos(HV(id))./cos(pi/3-HV(id))); G(id)=3*IV(id)-(R(id)+B(id)); %BG Sector % id=find((2*pi/3<=HV)& (HV<4*pi/3)); id=find((IV<=I1)&(HV>=(2.*pi./3))& (HV<4.*pi./3)& (IV<=(2./3-(HV-pi)./pi))); R(id)=IV(id).*(1-SV(id)); G(id)=IV(id).*(1+SV(id).*cos(HV(id)-2*pi/3)./cos(pi-HV(id))); B(id)=3*IV(id)-(R(id)+G(id)); %BR Sector % id=find((4*pi/3<=HV)& (HV<2*pi)); id=find((IV<=I1)&(HV>=4.*pi./3)& (HV<2.*pi)& (IV<=(2./3-(HV-(2.*pi-pi./3))./pi))); G(id)=IV(id).*(1-SV(id)); B(id)=IV(id).*(1+SV(id).*cos(HV(id)-4*pi/3)./cos(5*pi/3-HV(id))); R(id)=3*IV(id)-(G(id)+B(id)); % -----------END iNIHS to RGB for HLOWER--------------------------- % --------- iNIHS to RGB transformation for color points in HUPPER------- %section YC id=find((IV>I1)& pi./3<(HV)& (HV<=pi)& (IV>(1./3+(HV-(2.*pi./3))./pi))); HV(id)=HV(id)-4.*pi./3; G(id)=IV(id).*(1-SV(id))+SV(id); B(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); R(id)=3.*IV(id)-(G(id)+B(id)); %section CM id=find((IV>I1)&(pi<HV)& (HV<=(2.*pi-pi./3))& (IV>(1./3+(HV-(4.*pi./3))./pi))); B(id)=IV(id).*(1-SV(id))+SV(id); R(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); G(id)=3*IV(id)-(B(id)+R(id)); %section MY id=find((IV>I1)&((HV>-pi./3)& (HV<=0)& (IV>1./3+(2.*pi-HV)/pi)) | ((HV>0) & (HV<=pi./3) & (IV>(1./3+HV./pi)))); HV(id)=HV(id)-2.*pi./3; R(id)=IV(id).*(1-SV(id))+SV(id); G(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); B(id)=3.*IV(id)-(R(id)+G(id)); %-------END iNIHS To RGB for HUPPER------------------------- C=cat(3,R,G,B); C=max(min(C,1),0); end